I²C-Bus

Der I²C-Bus, gesprochen I-Quadrat-C oder I-Squared-C, ist ein in unserem Roboter verbauter und zur hauptsächlichen Kommunikation der Bauteile genutzer serieller Datenbus.

Verwendet werden nur zwei Leitungen, SDA (engl. Serial Data) und SCL (engl. Serial Clock). Hinzu kommen die Versorgungspannung (Vcc) und die Masse (GND) für die Bauteile, weshalb die verwendeten Kabel meist vier Adern besitzen. Spannung und Masse können allerdings auch anders geliefert werden.

Im I²C-Bus wird beim Starten der Schaltung, beziehungsweise beim Anhängen jedes Slaves an den Bus, jeweils eine I²C-Addresse vergeben. Dies ist auch bei der Programmierung der Microcontroller zu beachten, dass kein Bauteil die gleiche Addresse besitzt, sodass alle von einander Unterschieden werden können und der Master nur den richtigen Slave anspricht.

Dabei wird über SCL der Takt des Busses vom Master aus gegeben. Die Kommunikation, welche über Daten der Einheit Byte funktioniert, erfolgt dann über SDA.

Dazu sendet der Master ein Startsignal und in dem ersten Byte die Addresse des Slaves, den er ansprechen will. Die ersten sieben Bit ergeben die wirklich Adresse und das achte Bit schließlich die Aufforderung an den Slave, also ob er Daten senden oder empfangen soll. Dies wird mit dem sogennanten ACK-Bit von dem Slave bestätigt. Darauf folgt die eigentliche Kommunikation. Das letzte Byte des Slaves bestätigt der Master mit einem NACK-Bit bevor mit einem Stop-Signal die Übertragung beendet wird.